# -*- coding: utf-8 -*-
from datetime import datetime
"""Yksinkertainen perimisesimerkki, jossa Opiskelija periytyy Henkilöstä."""

class Henkilo:
    """Henkilouokka"""
    def __init__(self, nimi, syntymapaiva=datetime.now()):
        """__init__ toimii kuin konstruktori
        nimi: nimi on pakollinen tieto, joka ei voi olla tyhjä merkkijono.
        syntymapaiva: jos ei anneta parametrina, niin olion luomishetki
                      toimii syntymäpäivänä.
        """
        if len(nimi) is 0:
            raise Exception, 'Nimi on pakollinen tieto.'
        self.nimi = nimi
        self.syntymapaiva = syntymapaiva

    def __str__(self):
        """
        Palauttaa string esityksen olioista.
        """
        return "Nimi: " + self.nimi + ", Syntymäpäivä: " + str(self.syntymapaiva)

    def __repr__(self):
        return self.__str__()

class Opiskelija(Henkilo):
    """Opiskelija periytyy Henkilöstä"""
    def __init__(self, nimi, oppilaitos, syntymapaiva=None):
        self.oppilaitos = None
        self.opintosuoritukset = []

        if syntymapaiva is not None:
            Henkilo.__init__(self, nimi, syntymapaiva)
        else:
            Henkilo.__init__(self, nimi)
        self.oppilaitos = oppilaitos

    def lisaaOpintosuoritus(self, opintosuoritus):
        self.opintosuoritukset.append(opintosuoritus)

    def __str__(self):
        return Henkilo.__str__(self) + \
               ', Oppilaitos: ' +  \
               self.oppilaitos + ', Opintosuoritukset: ' + \
               str(self.opintosuoritukset)

    def __repr__(self):
        return self.__str__() 
